package IO;

import java.io.*;

/**
 * 普通文件的复制
 * 原文件路径必须存在，目标文件路径不存在
 */
public class fileCopy {
    public static void main(String[] args) throws Exception {
        //源文件路径
        File sourceFile =new File("D:\\桌面文件\\java课程\\课程资料\\javaweb\\哈哈哈哈\\示例图片.jpg");
        //目标文件路径
        File targetFile=new File("D:\\桌面文件\\java课程\\课程资料\\javaweb\\哈哈哈哈\\文件1\\文件2\\示例图片.jpg");

        //准备版数据的桶   桶越大数据搬得越快
        byte[] bucket=new byte[20];

        //打开两个文件
        int count=0;
        long start=System.currentTimeMillis();
        try(InputStream is=new FileInputStream(sourceFile)){
            try(OutputStream os=new FileOutputStream(targetFile)){
                //将源文件放到目标文件中
                while (true){
                    int n =is.read(bucket);
                    count+=n;
                    System.out.printf("已经复制了 %d 字节的数据\n",count);
                        if (n==-1){
                            //说明文件全部读完了,就终止循环
                            break;
                        }

                        //将源文件直接写入os中
                       os.write(bucket,0,n);
                    }
                //冲刷缓存区
                os.flush();
                }
            }
        long end=System.currentTimeMillis();
        System.out.println("共耗时:"+(end-start)+"ms");
        }
    }

